<?php

/**
 * Description of Model
 *
 * @author Allan
 */
class App_Model {
    
    public function  __construct(array $options = null) {
        if(is_array($options)){
            $this->setOptions($options);
        }
    }

    public function  __set($name, $value) {
        $method = 'set' . $name;
        if( ('mapper' == $name) || !method_exists($this, $method) ){
            throw new Exception('Invalid item property');
        }

        $this->$method($value);
    }

    public function  __get($name) {
        $method = 'get' . $name;
        if( ('mapper' == $name) || !method_exists($this, $method) ){
            throw new Exception('Invalid item property');
        }
        return $this->$method();
    }

    public function setoptions($options){
        $methods = get_class_methods($this);
        foreach($options as $key => $value){
            $method = 'set' . ucfirst($key);
            if(in_array($method, $methods)){
                $this->$method($value);
            }
        }
        return $this;
    }
}

